import axios from 'axios';
import { API } from '@/utils/status';
import { ElMessage } from 'element-plus';

const service = axios.create({
  // 如果环境是线上环境不需要跨域，可以直接配置import.meta.env.VITE_APP_BASE_API为线上地址，所有请求中要手动加上/api
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 6000000
});

// 请求拦截
service.interceptors.request.use(config => {

  return config;
});

// 响应拦截
service.interceptors.response.use(res => {
  // 未设置状态码默认成功
  const code = res.data.code || API.code.SUCCESS;
  // 获取响应(错误)信息 - 先使用后端返回的
  const msg = res.data.msg || API.getMsg(code);
  const data = res.data.data || null;
  // 二进制文件数据直接返回
  // if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){

  //   return Promise.resolve(res.data);
  // }
  console.log(res);
  if (res.request.responseURL.includes('/common/download') && res.request.readyState === 4 && res.request.status === 200){
    // return Promise.resolve(res.data);
    console.log('下载的')
    console.log(res)
    return Promise.resolve(res);
  }
  if (code !== API.code.SUCCESS) {
    console.log(`错误状态码: ${code}, 信息: ${msg}`);
    ElMessage({
      type: 'error',
      message: msg,
      duration: 3000
    });
    return Promise.reject(new Error(msg));
  } else {
    // 成功直接返回数据
    return Promise.resolve(data);
  }
},
error => {
  console.log(error)
  let message = error.msg || error.message || '数据响应失败，请稍后重试或联系管理员';
  ElMessage({ message, type: 'error', duration: 5000});
  return Promise.reject(error);
});
export default service;